package com.wondersgroup.fjzlpt.org.dao.inter.jtqy;

import java.util.Map;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.quick.framework.boot.repository.sql.jdbcTemplate.inter.SqlBeanBaseDao;
/**
 * 签约信息DAO
 * @author 01053853
 *
 */
public interface QyxxDAO extends SqlBeanBaseDao {
	
	/**
     * 根据条件查询所有(查询表格)
     * @param map
     * @return
     */
	public JSONArray queryAll(Map<String,String> map);
	
    /**
     * 分页查询签约信息数据(查询表格)
     * @param map
     * @return
     */
	public JSONObject queryPage(Map<String,String> map);

	/**
	 * 查询所有(查询视图)
	 * @param map
	 * @return
	 */
	public JSONArray queryAllOnView(Map map);

	/**
	 * 分页查询签约信息数据(查询视图)
	 * @param map
	 * @return
	 */
	public JSONObject queryPageOnView(Map map);

	/**
	 * 查询总数
	 * @param map
	 * @return
	 */
	public int queryCountOnView(Map map);
	
    /**
     * 分页查询签约单个对象
     * @param map
     * @return
     */
	public JSONObject queryOne(Map<String,String> map);
	
    /**
     * 分页查询签约信息对象列表
     * @param map
     * @return
     */
//	public JSONArray queryList(Map<String,String> map);

    /** 
     * 修改签约信息表状态
     * @param map
     */
    public void updateByCondition(Map map);
    
    /** 
     * 服务包变更操作
     * @param map
     */
    public JSONArray updateFwbbg(Map<String,String> map);
    
    /**
     * 查询已签约数量及其有效签约数量
     * @param map
     * @return
     */
    public JSONObject queryQyNumbers(Map<String,String> map);
    
    /**
     * 查询所有数据用于'我的签约居民'下载Excel
     * @param map
     * @return
     */
	public JSONArray queryAllForDownload(Map<String, String> map);
    /**
     * 分页查询工作台需要的签约数据
     * @param map
     * @return
     */
    public JSONObject queryPageForGzt(Map<String,String> map);
    
    /**
	 * 分页查询待分配任务
	 * @param map
	 * @return
	 */
	public JSONObject queryDfprwByPage(Map<String, String> map);
	
	/**
	 * 查询团队与患者签订的所有服务包
	 * @param TDIDs
	 * @return
	 */
	public JSONArray queryFwbByTdid(String[] TDIDs);
	
	/**
     * 查询用户是否已经签约
     * @param map
     * @return
     */
    public boolean isExist(Map<String,String> map);
    
    /**
     * 查询用户是否已经预签约
     * @param map
     * @return
     */
    public JSONObject isExistYqy(Map<String, String> map);
    
    /**
     * 家庭成员签约信息查询
     * @param map
     * @return
     */
    public JSONObject jtcyQyxxQuery(Map<String,String> map);
    
    /**
     * 分页查询签约信息数据
     * @param map
     * @return
     */
	public JSONObject queryALLPage(Map<String,String> map);
	
	/**
     * 查询卸载到Excel的数据
     * @param map
     * @return
     */
	public JSONArray queryALLForExcel(Map<String,String> map);
    
	/**
     * 分页查询签约信息数据
     * @param map
     * @return
     */
	public JSONObject findLsjlAll(Map<String,String> map);
	
	/**
	 * 查询一个居民的所有签约信息
	 * @param map
	 * @return
	 */
	public JSONObject querySingleUserQyxxAll(Map<String,String> map);
	
	/**
	 * 分页查询一个居民历史签约信息到健康城市系统
	 * @param map
	 * @return
	 */
	public JSONObject queryQyHistoryByPageToJkcs(Map<String,String> map);

	/**
	 * 根据医生ID查询该医生签约的患者总数
	 * @param map {USERID:xxx}
	 * @return
	 */
	public JSONObject queryQyzsToJkcs(Map<String,String> map);
	
	
	/**
	 * 根据签约信息ids查询用于打印协议的数据
	 * @param map
	 * @return
	 */
//	public JSONArray queryPrintXyByQyxxids(Map<String,String> map);

	/**
	 * 根据YLJGDM与医生身份证号查询是否存在。
	 * @param map
	 * @return
	 */
	public JSONObject findYljgxxByUserId (Map<String,String> map);

	/**
	 * 根据YLJGDM与医生身份证号查询是否存在。
	 * @param map
	 * @return
	 */
	public JSONObject isExistYs (Map<String,String> map);

	/**
	 * 根据患者身份证号查询患者是否存在。
	 * @param map
	 * @return
	 */
//	public JSONObject isExistHz (Map<String,String> map);

	/**
	 * 通过定时任务修改“签约类型”
	 * @param map
	 * @return
	 */
	public JSONArray updateQylxByTimedask(Map<String,String> map);

	/**
	 * 第三方接口：使用身份证号查询签约状态信息
	 * @param sfzh 身份证号
	 * @return
	 */
	public JSONObject getQyxxInfo (String sfzh);

	/**
	 * 第三方接口：使用身份证号查询签约服务包费用信息
	 * @param sfzh 身份证号
	 * @return
	 */
	public JSONArray getQyfyxxInfo (String sfzh);

	/**
	 * 第三方接口：使用签约信息ID查询记录是否收费。
	 * @param map 条件
	 * @return
	 */
	public boolean isExistSf(Map<String,String> map);

	/**
	 * 根据签约时间段和证件号码查询包含或者包含于该时间段的签约信息，
	 * 用于判断患者是否已经签订免费包或基础包
	 * @param map
	 * @return
	 */
	public JSONArray queryQyxxByQysj(Map<String,String> map);

	/**
	 * 根据QYXXID与USERID判断医生是否是签约团队的团队成员
	 * @return
	 */
	public boolean isTdcyByQyxxAndUserid(Map<String,String> map);


}
